package com.ruoyi.project.modules.table.service;

import java.util.List;

import com.ruoyi.project.modules.interfaceinfo.domain.InterfaceInfo;
import com.ruoyi.project.modules.table.domain.FieldInfo;
import com.ruoyi.project.modules.table.domain.TableInfo;
import com.ruoyi.project.modules.tableRelation.domain.TableRelation;

/**
 * 类对象信息Service接口
 * 
 * @author smallrain
 * @date 2021-10-28
 */
public interface ITableInfoService 
{
    /**
     * 查询类对象信息
     * 
     * @param id 类对象信息主键
     * @return 类对象信息
     */
    public TableInfo selectTableInfoById(Long id);

    /**
     * 查询类对象信息列表
     * 
     * @param tableInfo 类对象信息
     * @return 类对象信息集合
     */
    public List<TableInfo> selectTableInfoList(TableInfo tableInfo);

    /**
     * 新增类对象信息
     * 
     * @param tableInfo 类对象信息
     * @return 结果
     */
    public int insertTableInfo(TableInfo tableInfo);

    /**
     * 修改类对象信息
     * 
     * @param tableInfo 类对象信息
     * @return 结果
     */
    public int updateTableInfo(TableInfo tableInfo);

    /**
     * 批量删除类对象信息
     * 
     * @param ids 需要删除的类对象信息主键集合
     * @return 结果
     */
    public int deleteTableInfoByIds(String ids);

    /**
     * 删除类对象信息信息
     * 
     * @param id 类对象信息主键
     * @return 结果
     */
    public int deleteTableInfoById(Long id);

    List<FieldInfo> selectFieldInfoList(List<Long> filedIds);

    List<InterfaceInfo> interfaceList(Long tableId);

    List<FieldInfo> fieldInfoList(FieldInfo fieldInfo);

    List<TableInfo> selectTableInfoByTableIds(List<Long> tableIds);

    List<TableInfo> selectTableInfoByTableIdsV2(List<Long> tableIds);

    void updateTableStatus(TableInfo tableInfo);

    List<TableRelation> selectTableInfoByRelation(Long tableId);

    List<FieldInfo> selectFieldInfoByFieldId(List<Long> fieldIds);

    void updateFieldDesign(FieldInfo fieldInfo);

    void refreshData();

    List<FieldInfo> queryFieldInfoList(FieldInfo fieldInfo);
}
